public class Test {
    public static void main(String[] args) {
        Animal animal = new Animal();
        //1.实例化对象
        Animal animal1 = new Animal("动物",5);//调用带两个参数的构造方法
        Animal animal2 = new Animal();//调用不带参数的构造方法
        animal1.eat();
        animal2.eat();

        //2.调用成员方法
        Dog dog = new Dog("萨摩耶",1);
        Cat cat = new Cat("布偶猫",2);
        dog.bark();
        cat.mew();

        //3.通过 类名.静态成员变量 访问。静态成员变量也叫类变量
        //静态方法也如此
        System.out.println(Animal.color);
        System.out.println(Animal.getColor());

        //4.super和this
        dog.method();

        //5.重写toString方法
       //不重写，输出：Animal@404b9385   重写，输出return对应内容
        System.out.println(animal);

        //6.测试父类和子类代码块的执行顺序
       /* Dog dog1 = new Dog("萨摩耶",1);
        System.out.println("=============");
        Dog dog2 = new Dog("萨摩耶",1);*/

        //7.访问修饰限定符
        // private只能在当前类使用[封装]
        // 默认权限：包访问权限，只能在同一包里使用
        // protected 同一包里 以及 不同包中的子类当中 才可以访问（只能通过当前子类对象的引用或者super进行访问）
        // public 通用
    }
}